/**
 * Copyright: Copyright (c) 2018, 2022
 * Company: 杭州叙简科技股份有限公司
 */
package cn.com.scooper.config;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.io.File;

/**
 * Servlet 容器启动或终止Web应用时的业务操作：根据系统设置读取配置文件的路径
 *
 * @author LuLihong
 * @date 2018-05-04
 */
public class ApplicationConfigListener implements ServletContextListener {
	/**
	 * linux系统的配置根目录
	 */
	private static final String CONFIG_ROOT_LINUX = "/icooper/config";
	/**
	 * window系统的配置根目录
	 */
	private static final String CONFIG_ROOT_WINDOWS = System.getProperty("user.home") + "\\scooper";
	/**
	 * 项目名称
	 */
	private static final String APP_NAME = "/mine-data-sync";

	/** 
	 * 当Servlet 容器启动Web 应用时调用该方法。在调用完该方法之后，容器再对Filter 初始化， 
	 * 并且对那些在Web 应用启动时就需要被初始化的Servlet 进行初始化。 
	 */ 
	@Override
	public void contextInitialized(ServletContextEvent sce) {
		final String configRoot = isLinux() ? CONFIG_ROOT_LINUX : CONFIG_ROOT_WINDOWS;
		final String configRootApp = configRoot + APP_NAME;

		System.setProperty("user.conf", configRootApp);

		// 加载配置
		ConfigKit.init(APP_NAME, configRoot);
		ConfigKit.loadConfig("config/default.properties", "default", false);
		// 加载配置目录
		ConfigKit.loadConfig(new File(configRootApp + "/config.properties"),"config");
		ConfigKit.loadConfig(new File(configRootApp + "/db.properties"), "db");
	}

	/** 
	 * 当Servlet 容器终止Web 应用时调用该方法。在调用该方法之前，容器会先销毁所有的Servlet 和Filter 过滤器。 
	 */
	@Override
	public void contextDestroyed(ServletContextEvent arg0) {
		//ignore.
	}

	/**
	 * 判断系统是否是Linux
	 * 
	 * @return boolean：true-是linux系统|false-不是linux系统
	 */
	private boolean isLinux() {
		return System.getProperty("os.name").toLowerCase().contains("linux");
	}
}
